先前的發文,大部分的範例都是用 MS-SQL 的 T-SQL 語法寫成。但是,很多童鞋可能更偏好用 MySQL(MarisDB) 或 PostgreSQL。所以接下來,我就先列表說明一下這幾個資料庫之間,基本的一些語法差異,然後在接下來的文章,翻寫之前的範例程式,實際比較中間的差異。
由於我對 Markdown 語法在 Table 中如何換行不熟,試了一下,最後還是先寫在 word 中,再轉為圖檔。下面是三種不同資料庫語法的比較,請對照參考。
在 Day14 的系列文中,有先列出上面這3種資料庫的系統函數,和今天的主題相呼應。如此就大致將不同資料庫語法的差異,全面地做一個簡單的對比。仔細看,差異並不是十分的巨大。
為什麼我會花這麼多時間談資料庫的轉換? 甚至我還有一個開發中但是暫時 Pending 的小專案,想要寫一個專門轉換不同資料庫的 Store Procedure 及 udf 的轉換程式。主要還是因為我主張的「以資料庫為開發核心」這個開發方法論,任何的開發架構都不應該有過多的限制,而「以資料庫為開發核心」最會被人挑戰的劣勢,應該就是無法跨資料庫執行,所以我必須想辦法降低這個問題的影響。當然,大部分的情況,一個系統或是組織,通常都只會專精在一個資料庫上,沒有人會沒事隨便變更使用的資料庫系統,這會付出極高昂的成本。
另外,就是成本越來越高的商業資料庫授權,及相對而言功能越來越完善的 Opensource 社群。這個趨勢讓我必須正視 Opensource 資料庫的影響力,並能一併納入我的架構方法中。
接下來,我在把轉換語法時的一些注意事項,條列如下
明天我會試著將前天的實際範例(Store Procedure 及 udf) 改為 MariaDB 版,因為 MariaDB 並不支援 Table 這種回傳格式,我會改用固定式暫存表配合 guid 實作。我們明天見。